#ifndef _ABSTRACTION_H
#define _ABSTRACTION_H

class AbstractionImp;
class Abstraction
{
public:
	Abstraction() {};
	virtual ~Abstraction() {};

	virtual void Opration() = 0; 
};


class RefinedAbstraction : public Abstraction
{
public:
	RefinedAbstraction(AbstractionImp* imp);
	~RefinedAbstraction();

	void Opration();

private:
	AbstractionImp* mImp;

};

#endif